package com.design.javaManage.mapper;

import com.design.javaManage.entity.SysMenu;
import com.design.javaManage.entity.SysPermission;
import com.design.javaManage.entity.SysRole;
import com.design.javaManage.entity.SysUser;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

// 用户相关的操作

public interface SysUserMapper {

    // 根据用户名获取用户对象

    SysUser findByUsername(String username);

    // 根据用户ID查询权限信息

    List<SysRole> findRoles(@Param("userId") Long userId);

    // 根据用户ID查询菜单信息

    List<SysMenu> findMenus(@Param("userId")Long userId);

    // 根据父级ID和用户ID查询子菜单

    List<SysMenu> findChildrenMenu(@Param("id") Long id,@Param("userId")Long userId);

    // 根据用户ID查询权限数据

    List<SysPermission> findPermissions(@Param("userId")Long userId);

    // 分页查询用户信息

    Page<SysUser> findPage(String queryString);

    // 添加

    void insert(SysUser user);

    // 修改

    void update(SysUser user);

    // 更新

    void delete(Long id);

    /**
     * 根据用户信息中的角色列表，添加用户的角色
     * @param userId
     * @param roleId
     */
    void insertUserRoles(@Param("userId") Long userId,@Param("roleId") Long roleId);

    /**
     * 根据用户ID去删除角色列表
     * @param userId
     */
    void deleteRolesByUserId(@Param("userId") Long userId);

    /**
     * 根据用户ID查询用户的基本信息
     * @param id
     * @return
     */
    SysUser findById(Long id);

    /**
     * 根据邮件修改密码
     * @param email 邮件
     * @param password 新密码
     */
    @Update("update sys_user set password = #{password} where email = #{email}")
    void updatePwdByMail(@Param("email") String email, @Param("password") String password);

}
